import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;

public class leerDatos {
	private Scanner s;
	
	
	public boolean hayLineas(){
			return s.hasNextLine();
	}
	
	//Lectura de diferentes archivos de test para cada ejercicio.	
	public void abrirTestcaseEj1(){
		try{
			s = new Scanner(new File("src/Tp1Ej1.in"));
		}catch(Exception e){
			System.out.println("Falta el archivo Tp1Ej1.in");
		}		
	}
	
	public void abrirTestcaseEj2(){
		try{
			s = new Scanner(new File("src/Tp1Ej2.in"));
		}catch(Exception e){
			System.out.println("Falta el archivo Tp1Ej2.in");
		}		
	}

	public void abrirTestcaseEj3(){
		try{
			s = new Scanner(new File("src/Tp1Ej3.in"));
		}catch(Exception e){
			System.out.println("Falta el archivo Tp1Ej3.in");
		}		
	}
	
	
	//Leo y devuelvo un int. Para las dimensiones de las matrices en los ejercicios 2 y 3.
	public int leerInt(){
		return s.nextInt();
	}

	
	//Lectura ej1: Leo ints separados por espacios, devuelvo un array de ints.
	public int[] leerVector(){
		ArrayList <Integer> v = new ArrayList<Integer>();
		if ( s.hasNextLine() ){
			Scanner line = new Scanner ( s.nextLine() );
			line.useDelimiter(" ");
			
			while ( line.hasNext() ){
					v.add(Integer.parseInt(line.next()));
			}
			
			line.close();
		}
		
		int[] array = new int[v.size()];
		for(int i = 0; i < v.size(); i++){
			array[i] = v.get(i);  
		}

		return array;
	}
	

	//Lectura ej2: Leo una linea completa de ints y devuelvo un ArrayList de ints
	public ArrayList <Integer> leerMatriz(){
		ArrayList <Integer> v = new ArrayList<Integer>();
		if (s.hasNextLine()){
			Scanner line = new Scanner (s.nextLine());
			line.useDelimiter(" ");
			Scanner lineaMatriz = new Scanner (s.nextLine());
			while (lineaMatriz.hasNextInt()){
					v.add(Integer.parseInt(lineaMatriz.next()));
			}
			lineaMatriz.close();
			line.close();
		}
		return v;
	}
	
	
	//Lectura ej3: Leo pares de ints separados por ';' y devuelvo un ArrayList de ints
	public ArrayList<Integer> leerPosFichas(){
		
		//leo la siguiente linea, paso el contenido a un string y le saco los ";"
		Scanner line = new Scanner(s.nextLine());
		String posiciones = (s.nextLine()).toString();
		String posTemp = posiciones.replace(';',' ');
		
		//lo paso a un ArrayList
		line = new Scanner(posTemp);
		ArrayList<Integer> posicionesParse = new ArrayList<Integer>();
		while(line.hasNextInt()){
			posicionesParse.add(Integer.parseInt(line.next()));
		}
		
		return posicionesParse;
	}

	public void cerrarTestcase(){
		s.close();
	}
}

